Integrated program debugging, verification, and optimization using abstract interpretation (and the Ciao system preprocessor)
نویسندگان
چکیده
The technique of Abstract Interpretation has allowed the development of very sophisticated global program analyses which are at the same time provably correct and practical. We present in a tutorial fashion a novel program development framework which uses abstract interpretation as a fundamental tool. The framework uses modular, incremental abstract interpretation to obtain information about the program. This information is used to validate programs, to detect bugs with respect to partial specifications written using assertions (in the program itself and/or in system libraries), to generate and simplify run-time tests, and to perform high-level program transformations such as multiple abstract specialization, parallelization, and resource usage control, all in a provably correct way. In the case of validation and debugging, the assertions can refer to a variety of program points such as procedure entry, procedure exit, points within procedures, or global computations. The system can reason with much richer information than, for example, traditional types. This includes data structure * Corresponding author at: School of Computer Science, Technical University of Madrid, Campus de Montegancedo, 28660 Boadilla del Monte, Madrid, Spain. Tel: +34 91 336 7435; fax: +34 91 352 4819. E-mail addresses: [email protected], [email protected] (M.V. Hermenegildo), [email protected] (G. Puebla), [email protected] (F. Bueno), [email protected] (P. Lopez-Garcia). URLs: http://www.clip.dia.fi.upm.es/~herme, http://www.unm.edu/~herme (M.V. Hermenegildo), http://www.clip.dia.fi.upm.es/~german (G. Puebla), http://www.clip.dia.fi.upm.es/~bueno (F. Bueno), http://www.clip.dia.fi.upm.es/~pedro (P. Lopez-Garcia). shape (including pointer sharing), bounds on data structure sizes, and other operational variable instantiation properties, as well as procedure-level properties such as determinacy, termination, nonfailure, and bounds on resource consumption (time or space cost). CiaoPP, the preprocessor of the Ciao multi-paradigm programming system, which implements the described functionality, will be used to illustrate the fundamental ideas.
منابع مشابه
Program Analysis, Debugging, and Optimization Using the Ciao System Preprocessor
We present a tutorial overview of Ciaopp, the Ciao system preprocessor. Ciao is a public-domain, next-generation logic programming system, which subsumes ISO-Prolog and is specifically designed to a) be highly extensible via librarles and b) support modular program analysis, debugging, and optimization. The latter tasks are performed in an integrated fashion by Ciaopp. Ciaopp uses modular, incr...
متن کاملA Tutorial on Program Development and Optimization using the Ciao Preprocessor
We present in a tutorial fashion CiaoPP, the preprocessor of the Ciao multi-paradigm programming system, which implements a novel program development framework which uses abstract interpretation as a fundamental tool. The framework uses modular, incremental abstract interpretation to obtain information about the program. This information is used to validate programs, to detect bugs with respect...
متن کاملProgram Development Using Abstract Interpretation (And The Ciao System Preprocessor)
The technique of Abstract Interpretation has allowed the development of very sophisticated global program analyses which are at the same time provably correct and practical. We present in a tutorial fashion a novel program development framework which uses abstract interpretation as a fundamental tool. The framework uses modular, incremental abstract interpretation to obtain information about th...
متن کاملOn Improving Run-time Checking in Dynamic Languages
In order to detect incorrect program behaviors, a number of approaches have been proposed, which include a combination of language-level constructs (procedure-level annotations such as assertions/contracts, gradual types, etc.) and associated tools (such as static code analyzers and run-time verification frameworks). However, it is often the case that these constructs and tools are not used to ...
متن کاملResource Usage Analysis of Logic Programs via Abstract Interpretation Using Sized Types
We present a novel general resource analysis for logic programs based on sized types. Sized types are representations that incorporate structural (shape) information and allow expressing both lower and upper bounds on the size of a set of terms and their subterms at any position and depth. They also allow relating the sizes of terms and subterms occurring at different argument positions in logi...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید
ثبت ناماگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید
ورودعنوان ژورنال:
- Sci. Comput. Program.
دوره 58 شماره
صفحات -
تاریخ انتشار 2005